// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "WeaponPack.h"
#include "HoldData.generated.h"
/**
 * 
 */
USTRUCT(BlueprintType)
struct ISALONG2_API FHoldData : public FWeaponPack
{
	GENERATED_USTRUCT_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	TArray<UClass*> _logics;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	bool _useCustomAttackPhysicCenter;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	FVector _attackPhysicCenter;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	FVector _preAttackBoxLocation;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	FRotator _preAttackBoxRotation;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	FVector _preAttackBoxSize;

	// use this to override SK Mesh
	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData") 
	UStaticMesh* _overrideStaticMesh;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	bool _staticMeshOverride;

	// switch material for different effect
	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	UMaterial* _sourceMaterial;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	UMaterial* _oldMaterial;
	
	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	UMaterial* _bloodedSourceMaterial;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	UMaterial* _bloodedOldMaterial;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	bool _useMaterialInstance;

	// whether material is instance or not
	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	UMaterialInstance* _sourceMaterialInst;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	UMaterialInstance* _oldMaterialInst;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	UMaterialInstance* _bloodedSourceMaterialInst;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "PackData")
	UMaterialInstance* _bloodedOldMaterialInst;

	FHoldData()
	{
		_useCustomAttackPhysicCenter = false;
		_attackPhysicCenter = FVector(0, 0, 0);
		_preAttackBoxRotation = FRotator(0, 0, 0);
		_preAttackBoxLocation = FVector(0, 0, 0);
		_maxContains = 1;
		_overrideStaticMesh = nullptr;
		_staticMeshOverride = false;
		_sourceMaterial = nullptr;
		_oldMaterial = nullptr;
		_bloodedOldMaterialInst = nullptr;
		_bloodedOldMaterial = nullptr;
		_bloodedSourceMaterial = nullptr;
		_bloodedSourceMaterialInst = nullptr;
		_useMaterialInstance = false;
		_sourceMaterialInst = nullptr;
		_oldMaterialInst = nullptr;
	}
};
